package com.moleq.logic;

import java.util.List;

import com.moleq.device.CasioPrinter;
import com.moleq.device.DeviceManager;
import com.moleq.device.IPrinter;
import com.moleq.models.Receipt;
import com.moleq.service.ServiceManager;
import com.moleq.util.MoleQUtil;
import com.moleq.util.StringUtils;

public class PosPrinter extends CasioPrinter {

	
//	public void printReceipt(TransactionManager mTransMgr) {
//
////		DeviceManager devMgr = DeviceManager.getInstance();
//		
////		IPrinter mPrinter = DeviceManager.getInstance().printer;
//		if(this.isBusy()) return;
//			
//		if(mTransMgr.isNeedSignature()){
//			printSignaturePaper();
//		}
//		
//		
//		this.onConnect();
//		this.clearBuffer();
////		
//		
//		int iP4Len = 12;
//		int iContentLen = iTotalLen - iP4Len;
//		String sLine = "";
//		String sPrice="";
//		int iLen = 0;
//		
//		List<Receipt> hearderlst = ServiceManager.getInstance().mReceiptService.FindALLHeader();
//		if(hearderlst !=null){
//		for(int k=0;k<hearderlst.size();k++){
//			int align = 0,fontSize = 10 ; 
//			
//			if(hearderlst.get(k).getLarge().equals("L")){
//				fontSize = PosPrinter.FONT_DOUBLE_SIZE;
//			}else if(hearderlst.get(k).getLarge().equals("N")){
//				fontSize = PosPrinter.FONT_SINGLE_SIZE;
//			}
//			
//			if(hearderlst.get(k).getJustify().equals("L")){
//				align = PosPrinter.LEFT;
//			}else if(hearderlst.get(k).getJustify().equals("C")){
//				align = PosPrinter.CENTER;
//			}else if(hearderlst.get(k).getJustify().equals("R")){
//				align = PosPrinter.RIGHT;
//			}
//			this.appendBuffer(hearderlst.get(k).getMsg(),fontSize,align);
//			
//		}}
////		this.appendBuffer("MoleQ Inc.     ",PosPrinter.FONT_DOUBLE_SIZE,PosPrinter.RIGHT);
//		this.appendBuffer("===============================================");
//		for (int i = 0; i < mTransMgr.mSaleListItems.getItemCount(); i++) {
//			sLine = "";
//					
//			 iLen	=0;	
//			int iQty = 	mTransMgr.mSaleListItems.getItem(i).getQty();
//			String sName = mTransMgr.mSaleListItems.getItem(i).getName()+"  " + mTransMgr.mSaleListItems.getItem(i).getPriceDescription();
//			
//			// content
//			if (iQty >1)  sLine += mTransMgr.mSaleListItems.getItem(i).getQty() +" ";
//			
//			iLen = sLine.length();
//			if(sName.length() + iLen > iContentLen){
//				
//				sName = sName.substring(0,iContentLen - iLen);
//				
//			}else{
//				iLen = iContentLen - (sName.length() + iLen);
//				sLine += sName + StringUtils.getString(" ",iLen);
//			}
//			
//			//price
//			sPrice = "  "
//					+ MoleQUtil.fixNumber(mTransMgr.mSaleListItems.getItem(i).getPrice()) + " ";
//			iLen = iP4Len - sPrice.length();
//			if (iLen == 0) {
//				sLine += sPrice;
//			} else {
//				sLine += StringUtils.getString(" ", iLen) + sPrice;
//
//			}
//
//			this.appendBuffer(sLine);
//		
//		}
//		
//		this.appendBuffer("-----------------------------------------------");
//		sLine = "";
//		sLine = "Subtotal:";
//		sLine = StringUtils.getString(" ",iTotalLen/2  - sLine.length())+sLine;
//		sPrice = "  " +MoleQUtil.fixNumber(mTransMgr.getAmountPayable()) + " ";
//		iLen = iP4Len - sPrice.length();
//		if (iLen == 0) {
//			sLine += sPrice;
//		} else {
//			sLine += StringUtils.getString(" ", iLen) + sPrice;
//
//		}
//		this.appendBuffer(sLine);
//		
//		sLine = "";
//		sLine = "Tax:";
//		sLine = StringUtils.getString(" ",iTotalLen/2 - sLine.length())+sLine;
//		sPrice = "  " +MoleQUtil.fixNumber(mTransMgr.getTotalTax()) + " ";
//		iLen = iP4Len - sPrice.length();
//		if (iLen == 0) {
//			sLine += sPrice;
//		} else {
//			sLine += StringUtils.getString(" ", iLen) + sPrice;
//
//		}
//		this.appendBuffer(sLine);
//		
//		sLine = "";
//		sLine = "Total:";
//		sLine = StringUtils.getString(" ",iTotalLen/2  - sLine.length())+sLine;
//		sPrice = "  " +MoleQUtil.fixNumber(mTransMgr.getSubTotal()) + " ";
//		iLen = iP4Len - sPrice.length();
//		if (iLen == 0) {
//			sLine += sPrice;
//		} else {
//			sLine += StringUtils.getString(" ", iLen) + sPrice;
//
//		}
//		this.appendBuffer(sLine);
//		
//		sLine = "";
//		sLine = "Tender:";
//		sLine = StringUtils.getString(" ",iTotalLen/2  - sLine.length())+sLine;
//		sPrice = "  " +MoleQUtil.fixNumber(mTransMgr.getAmountOfPaidUp()) + " ";
//		iLen = iP4Len - sPrice.length();
//		if (iLen == 0) {
//			sLine += sPrice;
//		} else {
//			sLine += StringUtils.getString(" ", iLen) + sPrice;
//
//		}
//		this.appendBuffer(sLine);
//		
//		sLine = "";
//		sLine = "Change:";
//		sLine = StringUtils.getString(" ",iTotalLen/2  - sLine.length())+sLine;
//		sPrice = "  " +MoleQUtil.fixNumber(mTransMgr.getChange()) + " ";
//		iLen = iP4Len - sPrice.length();
//		if (iLen == 0) {
//			sLine += sPrice;
//		} else {
//			sLine += StringUtils.getString(" ", iLen) + sPrice;
//
//		}
//		this.appendBuffer(sLine);
//		
//		
//		if(mTransMgr.tenderList.size() > 0){
//			this.appendBuffer("--------------  Payment Detail  ---------------");
//			for(int i = 0;i<mTransMgr.tenderList.size();i++){
//				sLine = "";
//				sLine = mTransMgr.tenderList.get(i).paymentType.getText().toString()+":";
//				sLine = StringUtils.getString(" ",iTotalLen/2  - sLine.length())+sLine;
//				sPrice = "  " +MoleQUtil.fixNumber(mTransMgr.tenderList.get(i).price) + " ";
//				iLen = iP4Len - sPrice.length();
//				if (iLen == 0) {
//					sLine += sPrice;
//				} else {
//					sLine += StringUtils.getString(" ", iLen) + sPrice;
//
//				}
//				this.appendBuffer(sLine);
//				
//				String sAuth = mTransMgr.tenderList.get(i).AuthNumber;
//				if(sAuth != null && !sAuth.equals("")){
//					sLine = "";
//					sLine = "Auth Code:";
//					sLine = StringUtils.getString(" ",iTotalLen/2  - sLine.length())+sLine;
//					sPrice = "  " + sAuth + " ";
//					iLen = iP4Len - sPrice.length();
//					if (iLen == 0) {
//						sLine += sPrice;
//					} else {
//						sLine += StringUtils.getString(" ", iLen) + sPrice;
//
//					}
//					this.appendBuffer(sLine);
//				}
//			
//			}
//			
//		}
//		
//	
//	
//		
//		
//		this.appendBuffer("===============================================");
////		this.appendBuffer("Thank you for shopping.");
//		List<Receipt> footerlst = ServiceManager.getInstance().mReceiptService.FindALLTrailer();
//		if(footerlst !=null){
//			for(int k=0;k<footerlst.size();k++){
//				int align = 0,fontSize = 10 ; 
//				
//				if(footerlst.get(k).getLarge().equals("L")){
//					fontSize = PosPrinter.FONT_DOUBLE_SIZE;
//				}else if(footerlst.get(k).getLarge().equals("N")){
//					fontSize = PosPrinter.FONT_SINGLE_SIZE;
//				}
//				
//				if(footerlst.get(k).getJustify().equals("L")){
//					align = PosPrinter.LEFT;
//				}else if(footerlst.get(k).getJustify().equals("C")){
//					align = PosPrinter.CENTER;
//				}else if(footerlst.get(k).getJustify().equals("R")){
//					align = PosPrinter.RIGHT;
//				}
//				this.appendBuffer(footerlst.get(k).getMsg(),fontSize,align);
//				
//			}
//		}
//	
////		mPrinter.appendBuffer(">123456789|123456789|123456789|123456789|123456789|123456789|<");
//		this.print();
//		this.cutPaper();
//		this.onDisconnect();
//
//}

	public void printSignaturePaper() {
	
		if(this.isBusy()) return;
		
		this.onConnect();
		this.clearBuffer();

		this.appendBuffer("MoleQ Inc.     ",PosPrinter.FONT_DOUBLE_SIZE,PosPrinter.CENTER);
		this.appendBuffer("===============================================");
		this.appendBuffer("X----------------------------------------------");
		this.appendBuffer("                  SIGNATURE                    ");
		this.appendBuffer("                                               ");
		this.appendBuffer("===============================================");
		
		this.print();
		this.cutPaper();
		this.onDisconnect();
		
	}
}
